一 . 概述
决策树是一个预测模型;它代表的是对象属性与对象值之间的一种映射关系。树中每个节点表示某个对象,而每个分叉路径则代表某个可能的属性值,而每个叶节点则对应从根节点到该叶节点所经历的路径所表示的对象的值。决策树仅有单一输出,可以用于分析数据,同样也可以用来作预测。
二 . 所属分类
决策树一般属于 监督学习。
三 . Entropy (熵)
决策树需要用到熵。
熵是一个物理学概念,是一种测量在动力学方面不能做功的能量总数,也就是当总体的熵增加,其做功能力也下降,熵的量度正是能量退化的指标。熵亦被用于计算一个系统中的失序现象,也就是计算该系统混乱的程度。熵越低越稳定。
公式
简化
其中p
信息增益代表了在一个条件下,信息复杂度(不确定性)减少的程度。
信息增益是特征选择的一个重要指标,它定义为一个特征能够为分类系统带来多少信息,带来的信息越多,说明该特征越重要,相应的信息增益也就越大。
五 . sklearn 决策树示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| import pandas as pd import numpy as np from sklearn.tree import DecisionTreeClassifier from sklearn.metrics import accuracy_score
data = np.asarray(pd.read_csv('data.csv', header=None))
X = data[:, 0:2] y= data[:, 2]
model = DecisionTreeClassifier(max_depth=7, min_samples_leaf=1, )
reg = model.fit(X,y) y_pred = model.predict(X)
acc = accuracy_score(y, y_pred)
|
六 . 可视化
1 2 3 4 5 6 7 8 9 10 11 12 13
| import graphviz from sklearn import tree
dot_data = tree.export_graphviz(model, out_file='tree.dot', # feature_names=data.columns[:-1], # 特征名称 class_names=['No', 'Yes'], # 目标变量的类别名 filled=True, rounded=True, special_characters=True)
with open('tree.dot') as f: dot = f.read() graphviz.Source(dot)
|